/**
 ******************************************************************************
 * @file           : string_utils.h
 * @brief          : String Utilities Header File
 ******************************************************************************
 * @attention
 *
 * 字符串处理工具函数
 * 提供常用的字符串操作功能
 *
 ******************************************************************************
 */

/* Define to prevent recursive inclusion -------------------------------------*/
#ifndef __STRING_UTILS_H
#define __STRING_UTILS_H

#ifdef __cplusplus
extern "C" {
#endif

/* Includes ------------------------------------------------------------------*/
#include <stdint.h>
#include <stdbool.h>

/* Exported types ------------------------------------------------------------*/
/* Exported constants --------------------------------------------------------*/
/* Exported macro ------------------------------------------------------------*/
/* Exported variables --------------------------------------------------------*/
/* Exported functions --------------------------------------------------------*/

/* 字符串基本操作 */
uint32_t str_len(const char *str);
void str_copy(char *dst, const char *src, uint32_t max_len);
int32_t str_compare(const char *str1, const char *str2);
char* str_find(const char *str, const char *substr);

/* 字符串转换 */
int32_t str_to_int(const char *str);
float str_to_float(const char *str);
void int_to_str(int32_t num, char *str, uint32_t base);
void float_to_str(float num, char *str, uint8_t precision);

/* 字符串处理 */
void str_trim(char *str);
void str_upper(char *str);
void str_lower(char *str);
void str_reverse(char *str);

/* 字符串分割 */
int32_t str_split(char *str, const char *delim, char **tokens, uint32_t max_tokens);

/* 字符串格式化 */
int32_t str_format(char *buffer, uint32_t size, const char *format, ...);

/* 十六进制转换 */
void hex_to_str(const uint8_t *hex, uint32_t len, char *str);
void str_to_hex(const char *str, uint8_t *hex, uint32_t *len);

/* 字符检查 */
bool is_digit(char ch);
bool is_alpha(char ch);
bool is_alnum(char ch);
bool is_space(char ch);

#ifdef __cplusplus
}
#endif

#endif /* __STRING_UTILS_H */
